Category Archives: Semantic Web

学习SPARQL Part 1

尝些甜头:一些数据和查询

SPARQL是SPARQL协议和RDF查询语言(SPARQL Protocol and RDF Query Language)的递归缩写,其标准是由万维网联盟(W3C)制定的。

SPARQL的协议部分(SP)规定了客户端程序和SPARQL处理服务器之间交互的规则。

SPARQL的检索语言部分(RQL)被设计用来查询RDF数据,但是并不仅限于查询以多种格式的RDF中的任何一种格式进行存储的数据。

一些开源或商业软件都可以把关系型数据、XML、电子表格或其他格式的数据当作RDF数据来对待,因此你也可以用SPARQL去查询这些数据。

你不需要了解SP部分,便能学习RQL部分。


1.1将要检索的数据

以后将会着重介绍资源描述框架(Resource Description Framework,RDF),这里仅作简单提要:RDF并不是一个数据格式,而是一个数据模型,我们可以选择不同的语法来存储RDF数据。

在RDF数据模型中,采用三元组(triple)的形式表达事实。每一个三元组都由三部分构成,分别为:主语(subject)、谓词(predicate)和宾语(object),就像一个简单的英语句子一样。

你可以将三者分别看作是:被描述的资源的标识符,属性名和属性值。

主语(资源标识符) 谓词(属性名) 宾语(属性值)
Ryan homepage http://www.ryanzhang.info
Spock species half Vulcan half Human

下面的example11-1.ttl文件包含一些用Turtle语法编写的RDF数据,具体而言是一个以三元组形式存储联系人和联系方式的文件。在RDF中,对是可以于资源的一个属性赋与多个值的,例如文件中spock就有两个email地址。
# filename: example11-1.ttl

@prefix ex: <http://ryanzhang.info/ns/addressbook#>.

ex:ryan ex:homeTel "0511-88888888" .
ex:ryan ex:email "ryanzjlib@gmail.com" .

ex:violetta ex:homeTel "0510-55555555" .
ex:violetta ex:email "violettaChen@gmail.com" .

ex:spock ex:homeTel "09802-38567391" .
ex:spock ex:email "spock@Federation.gov" .
ex:spock ex:email "spock@Enterprise.ship".

像英语中句子一样,Turtle语法中三元组通常以"."结尾,在主语、谓词和宾语之间的空格不是必须的,但是为了可读性,推荐使用空格来分隔。Turtle语法中注释以#开头。

@prefix ex: <http://ryanzhang.info/ns/addressbook# >.也是一个三元组,它告诉我们在文件中前缀“ex”代表http://ryanzhang.info/ns/addressbook#这个URI。

在一个RDF三元组中,主语和谓词都必须属于一个特定的命名空间(namespace),这么做不仅能够防止将数据进行整合时与其他数据中类似的名称之间产生的混淆,还能通过这些URI来提供更多的信息。前缀可以帮助我们避免重复地录入这些URI。

URI是统一资源标识符( Uniform Resource Identifier)的缩写。网址,统一资源定位符(Uniform Resource Locato,URL)便是一种URI。定位符帮助我们定位资源,例如一个网页,或者一个pdf文档;而标识符帮助我们标识资源,例如spock在上面例子中的标识符为:http://ryanzhang.info/ns/addressbook#spock。

虽然URI可能与URL很像,但是URI的主要功能是为资源提供一个特有的名称,而不是帮助你的浏览器定位和打开这个资源。


1.2检索数据

在SPARQL查询语句中,我们依据三元组的模式,描述要查询的信息所需要满足的条件,与实际的RDF数据唯一的不同点是,我们可以使用变量。

example12-1.rq这个文件对刚才example11-1.ttl进行查询,希望找出ryan的邮件地址。

# filename: example12-1.rq

PREFIX ex: <http://ryanzhang.info/ns/addressbook# >

SELECT ?ryanemail

WHERE { ex:ryan ex:email ?ryanemail .  }

这个查询中只含有一个三元组模式,这个三元组模式是以主语ex:ryan,谓词ex:email,和宾语?ryanemail构成的,而?ryanemail是一个变量。任何满足这个模式的三元组的宾语都将存储到变量?ryanemail中并且作为果返回。

注:

  1. SPARQL中PREFIX,SELECT,WHERE这些关键词都不要求大写,小写亦可。
  2. SPARQL查询语句中,只有最后一个三元组模式的结尾可以省略“.”号。

 

 

本体开发101

Noy 和 McGuinness写的本体开发101

1为什开发本体

本体的定义:

对于领域内术语及术语之间关系的明确且正式的规定
explicit formal specifications of the terms in the domain and relations among them (Gruber 1993)
本体为研究人员定义了一个通用的词汇,用于在一个领域内分享信息。
本体以机器可理解的形式对领域内基本概念的概念之间的关系作出了定义。

开发本体的目的:

  1. 在人和软件代理之中分享对于结构化信息的共同理解。
    Sharing common understanding of the structure of information among people or software agents.(Musen 1992; Gruber 1993)
  2. 使得领域知识能够重用
    Enabling reuse of domain knowledge
  3. 作出明确的领域假设
    Making explicit domain assumptions
  4. 区分操作知识和领域知识
    Separating the domain knowledge from the operational knowledge
  5. 分析领域知识
    Analyzing domain knowledge
开发一个领域本体的本身并不是最终目的,开发本体是为了定义一系列的数据以及数据的结构,使得这些数据能够被其他程序所使用。
本体设计和面向对象程序设计的区别:
  • 面向对象程序设计以类的方法上,程序猿根据一个类的操作属性来作出设计决定
  • 本体设计者则是基于类的结构属性作出设计决定的

2 一个本体中有什么?

  1. 概念(Concepts/classes)
  2. 属性(Properties/slots/roles)
  3. 限定(role restrictions/facets)
本体加上一系列个体实例(instances)便构成了一个知识库。

实际来说,开发一个本体包括:

  1. 定义本体中的类
  2. 依据一个分类层次(上位类——下位类)来安排类
  3. 定义属性以及描述属性所允许的值
  4. 为实例的属性添加值

3 一个简单的知识工程方法论

本体设计的一些基本规则:

  1. 没有唯一正确的领域建模方法
  2. 本体开发必须是一个重复的过程
  3. 本体中的概念应该尽可能契合目标领域内的对象和关系
开发步骤

步骤1:确定本体的领域和范围

通过问一些本体能力问题(Competency Questions),如:
  1. 本体将涵盖什么领域
  2. 我们要用本体来做什么
  3. 本体能够帮助回答什么样的问题
  4. 谁将维护和使用本体

步骤2:考虑重用已有的本体

步骤3:列举本体内的重要术语

步骤4:定义类和类的层次

  1. 从上而下
  2. 从下而上
  3. 1、2组合

步骤5:定义类的属性——槽

  • 为每个属性确定其描述的类
  • 属性应该附加到能采用该属性的最高层次的类上

步骤6:定义槽的侧面

槽可以有不同的侧面,主要包括:
  1. 槽基数 Slot cardinality
    定义了一个槽能够有多少个值
  2. 槽—值类型 Slot-value type
    常见有字符串、数量、布尔、列表、实例
  3. 槽的定义域和值域 Domain and Range of a slot

步骤7:创造实例

4定义类和类的层次

  1. 确保类的层次是正确的
  2. 分析类层次中的同级类
  3. 注意多继承情况
  4. 仔细考虑是否要增加新类
  5. 辨别是类和属性值
  6. 辨别实例和类
  7. 限制好范围
  8. 注意不相交的子类

5 定义属性

6 命名

  1. 大写和定界符
  2. 单数或复数
  3. 前缀或后缀

7 其他资源

8 结论

笔记 OPENHPI 语义网技术 番外篇

公开课请见:https://openhpi.de/

番外:语义元数据和网络

网络上的语义注释
三种在HTML文档中嵌入带有明确语义注释的结构化数据的方法:
  1. 领域特定的微格式microformats
  2. 通用的RDFa和嵌入式的RDF
  3. HTML5微数据microdata,包括schema.org

微格式Microformats

简单来说微格式在HTML标记中使用class attribute(通常是 <span>和<div>)并且将描述性的名称赋予实体和其属性。)
重用的属性:class, rel, rev
预定义的标准微格式:
  • hCard
  • hCalender
  • rel-Tag
  • XFN
  • hReview, VoteLinks
  • XOXO
是简单的结构化数据,但不是真正意义上的语义数据.
微格式数据可以利用XSLT转码成RDF

RDFa=RDF in HTML attributes

RDFa1.0是基于XHTML的,RDFa1.1是基于HTML5的
RDFa1.1包含lite和完全版两个不同版本
RDFa Lite 定义了5个新的HTML attributes
  1. vocab
    <p vocab="http://xmlns.com/foaf/0.1/" >
    My name is Harald Sack and you can
    give me a ring via 1-800-555-0527.
    </p>
  2. typeof
    <p vocab="http://xmlns.com/foaf/0.1/"
    typeof="Person" >
    My name is Harald Sack and you can
    give me a ring via 1-800-555-0527.
    </p>
  3. property
    <p vocab="http://xmlns.com/foaf/0.1/" typeof="Person">
    My name is
    <span property="name" >Harald Sack</span>
    and you can give me a ring via
    <span property="phone" >1-800-555-0527</span>.
    <img property="img"
    src="http://hpi-web.de/images/harald.jpg" />
    </p>
  4. resource
    <p vocab="http://xmlns.com/foaf/0.1/"
    resource=“#harald“ typeof="Person">
    My name is
    <span property="name">Harald Sack</span>
    and you can give me a ring via
    <span property="phone">1-800-555-0527</span>.
    <img property="img"
    src="http://hpi-web.de/images/harald.jpg" />
    </p>
  5. prefix
    <p vocab="http://xmlns.com/foaf/0.1/"
    prefix=“ov: http://open.vocab.org/terms/“
    resource=“#harald“ typeof="Person">
    My name is
    <span property="name">Harald Sack</span>
    and you can give me a ring via
    <span property="phone">1-800-555-0527</span>.
    My favorite beverage is
    <span property="ov:preferredBeverage" >Green Tea
    </span>.
    </p>

HTML5微数据 microdata

搜索引擎、网络爬虫和网页浏览器能识别和理解schema.org标记
schema.org微格式标记可以实现RDF映射
rich snippets
snippets是在检索结果下方显示的额外信息,google可以生成snippets,但是使用HTML的微格式标记可以帮助Google找到用于生成snippets的信息。
HTML5微数据的词汇:http://data-vocabulary.org
微数据的全称attributes:
  1. itemscope
  2. itemtype
  3. itemid
  4. itemprop
  5. itemref

笔记 OPENHPI 语义网技术 Week6

公开课请见:https://openhpi.de/

L6-1 数据网络的应用——本体工程Ontological Engineering

  • 对于哲学而言,本体是:
    有关于存在的理论,尝试去解释存在本身,通过发开一个全局的分类以及类间关系的系统。
  • 对于计算机科学而言,本体是:
    对于有关概念的一个明晰、正式的规定。
语义网基于的是元数据的互操作
在异构的元数据之中存在着语义隔阂,这个隔阂只能在本体的帮助之下才能桥接起来
模型和模型背后的本体(不同本体都可以用来表达同一个知识):
ontology1
ontology2
本体工程
本体赋予了元数据之间的互操作能力
我们可以做的研究有:
  • 本体设计 Ootology Design
    有效率地开发本体的方法
  • 本体映射 Ontology Mapping
    有效率地比较本体的方法
  • 本体合并 Ontology Merging
    有效率地合并本体的方法
本体工程的自动化辅助手段:
  • 本体学习 Ontology Learning:学习一个给定信息资源集中的本体
  • 根据一个信息资源中的不同个体,将已有的本体创建出来

L6-2 本体设计Ontology Design

本体设计方法论:描述了本体创建的所有必需活动
为什么需要一个正式的方法论?
  1. 为了开发本体的一致性
  2. 为了有效率地开发复杂的本体
  3. 为了开发工作可以分布式地进行
Fernandez-Lopez et. al., 1997 本体创建方法论,将本体创建活动分为三类:
  1. 本体的管理活动
  2. 本体开发导向的活动
  3. 本体的支持活动
本体的管理活动:
  1. 规划Scheduling
    识别要解决的任务
    安排计划
    识别所需的资源
  2. 控制Control
    保证任务的严格执行
  3. 质量保证Quality Assurance
    保证开发过程中所有产出的资源(本体、软件、文档)的质量
本体开发导向的活动
  1. 前期开发
    1.1环境研究
    本体的目标软件平台是什么?
    什么样的应用会使用这个本体?
    1.2可行性研究
    本体是否真能够被开发出来?
    开发出来的本体是否有意义?
  2. 开发
    2.1明确化
    为什么要开发这个本体,对用户有什么好处?
    2.2概念化
    用一个概念模型来构建领域知识
    2.3形式化

    用(半)可计算的模型来将概念模型形式化

    2.4实施
    用本体表达语言来创建一个可计算的模型

  3. 开发后期
    3.1维护
    对本体的更新和调整
    3.2使用/重用
    本体在目的应用(和非计划的应用/本体)中的使用情况
本体支持活动
  1. 知识获取
    从专家处获得知识(本体学习)
  2. 评价
    对本体开发过程的每一个步骤进行技术性的评价
  3. 整合
    重用已有的本体
  4. 合并
    从特定领域已有的本体创建新的本体
  5. 队列
    对本体运用/设计映射规则
  6. 文档
    本体开发的每个过程都需要被精确地记录下来
  7. 配置管理
    管理开发本体的所有文档的各个版本
L6-3 本体设计101
Noy, McGuinness 2000
本体开发101过程
ontology development 101 process
确定范围——考虑重用——列举术语——定义类——定义谓词——定义限制——创建实例
对于一个领域,永远没有唯一正确的建模方法
1确定范围
  1. 这个本体涵盖了什么领域?
  2. 本体应该被用来做什么?
  3. 这个本体中表达的知识能够回答什么样类型的问题?
  4. 谁可能会使用和维护这个本体?
2考虑重用
重用的意义:
  1. 节约成本
  2. 为了应用那些为已有的其他本体而开发的工具
  3. 为了重用那些已经生效的本体。
若非必须,勿增本体
3列举术语
  1. 我们在讨论什么概念?
  2. 对于这些概念我们想说些什么?
  3. 这些概念有哪些属性?
4定义类
  1. 类是目标领域内的概念
  2. 类似一类具有相同属性的对象的集合
  3. 选择好类之间层次的构建方式
    自上而下
    自下而上
    从中间往两边
5定义属性
  1. 类中的谓词描述了类中实例的属性
6定义限制
  1. 属性限制描述了/限制了可能的谓词值集合
7根据类创建个体
101后需要进一步开发规则(公式、公理)

另一种方法论
统一过程(Unified Process)De Nicola, Missikoff, Navigli (2005)
  • 基于软件开发中的统一过程方法论和统一建模语言(UML)
  • 用例驱使
  • 主要用来开发应用本体
目标:
  1. 减少开发大规模本体的时间和消耗
  2. 不断地通过对中间结果的验证来提高本体开发的质量
  3. 有效的聚集和明确分工知识工程师和领域专家的方法论
  4. 中间结果可以被用户评价
开发过程分为三个环节,再细分为4个迭代阶段:

  1. 启始Inception
  2. 精化Elaboration
  3. 构建Construction
  4. 产品化Transition
每一个迭代包括5个工作流:

  1. 需求Requirements
  2. 分析Analysis
  3. 设计Design
  4. 实施Implementation
  5. 测试Test

统一过程示意图

另一种方法论
本体设计模式Gangemi et al., 2005
从建筑学中而来,之前用于软件建模,
提供了:简单的可重用本体模板
ontologydesignpatterns.org

L6-4 关联数据工程

LOD 云图
  1. Use URIs as names for things.
    URI不仅用来标识文档,也用来标识任何现实世界的事物以及抽象概念
  2. Use HTTP URIs, so that people can look up those names.
    URI可以解引成对于资源的描述信息,主要通过http内容协商机制(303和hash)
  3. When someone looks up a URI, provide useful information, using the standards (RDF, SPARQL)
    RDF作为网络上发布结构化数据的统一的数据模型,在RDF图中所有的URI都要是可解引的
  4. Include links to other URIs, so that they can discover more things.
    将不同数据源的数据连接起来(关系链接、标识链接、词汇链接)
开放关联数据评价指标
  1. Available on the web (whatever format) but with an open licence, to be Open Data
  2. Available as machine-readable structured data(e.g. excel instead of image scan of a table)
  3. as (2) plus non-proprietary format (e.g. CSV instead of excel)
  4. All the above plus: use open standards from W3C (RDF and SPARQL) to identify things, so that people can point at your stuff
  5. All the above, plus: link your data to other people’s data to provide context

L6-5 关联数据工程

DBPedia介绍
 
开放关联数据分领域统计数据
LOD by domain
本体将关联数据云连接起来
例如:
  1. owl
    owl:sameAs 连接了相同的个体
    owl:equivalentClass 连接了相同的类
  2. umbel Upper Mapping and Binding Exchange Layer
    是OpenCyc的一个子集,基于SKOS和OWL2的RDF三元组
    包含了28000个skos:concept
    有46000条映射
  3. skos 简单只是管理系统
    基于RDF和RDFS
    定义、映射词汇和本体
    skos:Concept、skos:narrower、skos:broader、skos:related、skos:exactMatch、skos:narrowMatch、skos:broadMatch、skos:relatedMatch
发布关联数据
  1. 本地出版:D2R-Server,OpenLink Virtuoso, Pubby等
  2. 封装器(Wrappers)的实施方式:
    基于现有的应用——SIOC Exporter for WordPress、Drupal、phpBB
    基于现有的API——Amazon API, Google Base-API
  3. 浏览器
    Tabulator 
    http://swui.semanticweb.org/swui06/papers/Berners-Lee/Berners-Lee.pdf
    OpenLink RDF Data Explorer:http://ode.openlinksw.com/
    Zitgist Browserhttp://browser.zitgist.com/
    DISCO Browserhttp://sites.wiwiss.fu-berlin.de/suhl/bizer/ng4j/disco/
  4. 搜索引擎
    Swoogle http://swoogle.umbc.edu/
    SWSE Semantic Web Search Engine http://swse.deri.org/
    Sindice http://www.sindice.com/
    Falcons http://iws.seu.edu.cn/services/falcons/
    Sig.ma  http://sig.ma
  5. 关联数据驱使的网络应用
关联数据应用的组成:
  1. 本地的RDF存储
  2. 逻辑和用户界面
  3. 数据集成组件
  4. 数据重发布组件
SPARQL终端是一个RESTful 网络服务,可以通过HTTP GET访问,结果可以是各种格式
相关的函数库:
  1. SPARQL Javascript Library
    http://www.thefigtrees.net/lee/blog/2006/04/sparql_calendar_demo_a_sparql.html
  2. ARC for SPARQL (PHP)
    http://arc.semsol.org/
  3. RAP - RDF API für PHP
    http://www4.wiwiss.fu-berlin.de/bizer/rdfapi/index.html
  4. Jena/ARQ (Java)
    http://jena.sourceforge.net/
  5. Sesame (Java)
    http://www.openrdf.org/
  6. SPARQL Wrapper (Python)
    http://sparql-wrapper.sourceforge.net/
一个Jena例子
example in jena

L6-6 指定实体识别(Named Entity Recognition)

指定实体识别是:“定位和区分原子元素至预先定义了的名称、人物、组织、位置、时间表达、数量等分类中去”
“locating and classifying atomic elements...into predefined categories such as names, persons, organizations, locations, expressions of time, quantities, monetary values, etc.”
C.J.Rijsbergen, Information Retrieval (1979
实体的映射候选:
  1. linguistic analysis语言学分析 part of speech tagging POS标签
  2. normalization 标准化
  3. encoding and spelling 编码和拼写
  4. 等等
指定实体识别策略:
  1. 流行度策略Popularity based strategies
  2. 语言学策略Linguistical strategies
  3. 统计学策略Statistical strategies
  4. 基于语义的策略Semantic based strategies

L6-7 语义检索

传统的信息检索系统的评价

 
语义检索
特点:
  1. 信息本身是标注了(基于文字的)包含了语义实体的元数据
  2. 基于实体(而非关键词)的信息检索
  3. 利用语义关系,例如基于内容的近似关系
  4. 通过语义注释实现元数据互操作
总的目的:
  • 提高信息检索的量和质
语义元数据对传统基于关键字的检索的提高:
  1. 检索式的扩展/精确
    扩展:利用词典/叙词表或本体中的同义词、相关概念、下位词等来扩展检索式
    精确:利用整体词、上位词来精确检索式
  2. 交互访问
    通过领域本体来提供额外的相关信息的补充
  3. 探索式检索
    利用领域本体和启发式来发现相关事实
  4. 推理
    利用领域本体和推理算法以及启发式来发现新的相关事实

L6-8 探索式语义检索

"Searching is not always just searching"?
探索式检索:
  1. 如果用户不知道应该使用怎样的检索式,该怎么办?
  2. 如果用户想要查找的是一个复杂的问题,该怎么办?
  3. 如果用户不了解他所想查找信息的领域,该怎么办?
  4. 如果用户想要知道有关一个特定主题的全部,该怎么办?

笔记 OPENHPI 语义网技术 Week5

公开课请见:https://openhpi.de/

L5-1 知识表达——描述逻辑ALC

知识表达的两类方式
  1. 基于逻辑的公式化方式
    例如:描述逻辑
  2. 非基于逻辑的公式化方式
    例如:语义网络Semantic Networks、基于框架的表达、基于规则的表达
一阶逻辑不适合做语义网本体语言的种种原因...略,描述逻辑适合做语义网本体语言的种种原因,略。
 
OWL 2 DL这个W3C标准既是基于描述逻辑SHROIQ(D)的本体语言
 
ALC的基础知识见W4笔记
 
ALC角色的量词:
  • Strict Binding严格限定一个类的角色范围
    Examination ⊑ ∀hasSupervisor.Professor
    (∀x)(Examination(x) → (∀y)(hasSupervisor(x,y) → Professor(y)))
    考试必须由一个老师监考
  • Open Binding开放限定一个类的角色范围
    Examination ⊑ ∃hasSupervisor.Person
    (∀x)(Examination(x) → (∃y)(hasSupervisor(x,y) Λ Person(y)))
    考试要由至少一个老师监考
ALC形式语法
  • ALC TBox术语知识层包括复杂类之间构成的推论
  • ALC ABox断言知识层包括复杂类、角色、和实体之间构成的推论
  • ALC 知识库Knowledge Base包括 ABox和TBox     
ALC语义(演绎)
一个演绎I=(ΔI,.I)包含了:
  • 一个实体的领域
  • 一个演绎函数:
    将实体名a 映射到其 领域元素aI∈Δ I
    将类名C映射到 领域元素CI⊆ΔI
    将角色名R映射到 RI⊆ΔI×ΔI

ALC语义演绎

复杂类的扩展
ALC complex classes ext
公理的扩展

ALC Axioms ext

 
ALC知识库
术语知识TBox 描述了建模领域的结构(概念化的模式)
  • Human ⊑ ∃ parentOf.Human
  • Orphan ≡ Human ⊓ ¬∃ hasParent.Alive
推断知识ABox 描述了特定情形(数据)的公理
  • Orphan(harrypotter)
  • hasParent(harrypotter,jamespotter)
描述逻辑

L5-2 知识表达——描述逻辑的推理和推论

开放世界假定(Open World Assumption, OWA)
  • 当我们有一个空白的描述逻辑本体时,一切都是可能的
  • 我们开始不断地对一个本体加以限制,让它变得越来越限定
  • 我们定义什么是不可能的,什么是避免的,什么是排除的
Sheep  Animal ⊓ ∀hasLimbs.Leg 
并没有限定羊不能飞,所以羊是可能能飞的,但是我们无法知道是否能飞
在开放世界假定中,除非我们规定了羊不能飞或者羊能飞,不然的将返回“不知道”
 
在语义网中,我们期望别人能够扩展我们的模型,OWA就比较适合,我们可以有意识地让我们的模型不完整,然后允许它人重用和扩展我们的模型。
 
封闭世界假定(Closed World Assumption, CWA)
在封闭世界假定中,我们陈述所有的可能性,没有陈述的事情就一定是不可能的。
  • OWA额外的个体的存在是可能的,即使本体中没有包括它
  • CWA知识库包含了所有的个体
推理存在的问题:
  • 知识库的全局一致性
    知识库是否有意义?
    KB ⊨ ⊥? 
  • 类的一致性
    类是否为空?
    C ≡  ⊥ ?
  • 类的包含
    构建知识库
    C
      D?
  • 类的等价
    两个类是否一样?
    C ≡ D?
  • 类的不相交
    两个类是否不相交?

    C  D = ⊥ ?
  • 类成员
    个体是否属于一个类?

    C(a)?
描述逻辑的推理的可判定性:不总是可判定
 
还原至不可满足性:
  • 类的一致性

    iff KB {C(a)} unsatisfiable (a new)

    C ≡  ⊥ 

  • 类的包含

    iff KB {(C¬D)(a)} unsatisfiable (a new)

    ⊑ D

  • 类的等价

    iff C  D and D  C

    C ≡ D

  • 类的不相交

    iff KB {(CD)(a)} unsatisfiable (a new)
    ⊓ D = ⊥ 
  • 类成员

    iff KB {¬C(a)} unsatisfiable
    C(a)

L5-3 知识表达——ALC的表格算法

描述逻辑的表格算法,转换至标准否定范式:
 
令W是一个知识库
  • CD和D C替换C≡D
  • ¬CD替换CD
  • 应用标准否定范式的转换规则
结果将是一个知识库NNF(W),NNF(W)与W是逻辑上等价的。
 
NNF转换规则
 nnf transformation
转换示例:
P  (E U) ¬(¬ED)
转换成
¬P  (E U) (E¬D)
 
描述逻辑的表格扩展规则:

 tableaux extension rule for dl
如果结果中的表格是封闭的,则原知识库是不可满足的。
 
描述逻辑的表格算法示例:
 
  • P代表教授
  • E代表人
  • U代表大学员工
  • D代表学生
给定知识库:
  • P  (E U) (E¬D)
试问:

  • P  E是否是一个合理的逻辑推理?
先将知识库转换为标准否定范式:¬P(E U) (E¬D)
将试证明的⊑ E转换成否定范式:¬P ⊔E,对其进行否定,得P  ¬E
 
也就是要证明知识库{¬P⊔ (E⊓ U)⊔ (E⊓ ¬D),(P ¬E)(a)}是否是封闭的
 
表格算法:
(1) (P⊓¬E)(a) (from knowledge base)
(2|α from 1) P(a)
(3|α from 1) ¬E(a)
(4) (¬P⊔ (E⊓ U)⊔ (E⊓ ¬D))(a) (from knowledge base)
(5|β from 4)) ¬P(a) | (6)((E ⊓U) ⊔(E ⊓¬D))(a)
                    (7|β from 6) (E⊓ U)(a) | (8) (E⊓ ¬D)(a)
                    (9| α from 7) E(a)      (10| α from 8) E(a)            
                  (11| α from 7) U(a)      (12| α from 8) ¬D(a)
 
带有Blocking的描述逻辑表格算法,未懂

L5-4 知识表达——网络本体语言OWL 第一部分

OWL本体包括:
  • 属性
  • 个体(类的实例)
OWL采用开放世界假定
OWL不限定唯一的名称假定,A可能和B指的的同样一个个体
OWL是一阶逻辑的一个语义片段
 
OWL是一系列本体:

 owl hierarchies
OWL 1 DL 基于的是SHOIN(D)
 
OWL2 可以用不同的语法表达:
  • 功能语法
  • RDF语法
  • XML语法
  • Manchester语法
  • Turtle 
Turtle是非常简单易编写的,RDF语法的兼容性非常好
一个turtle语法的owl本体示例:
owl turtle

L5-5 知识表达——网络本体语言OWL 第二部分

OWL 类
 
两个预定义的类:
  • owl:Thing 包含了所有个体的类
  • owl:Nothing 空类
OWL类的定义:
  :Wine a owl:Class .
 
OWL个体
  • 通过类成员关系来定义个体:
    :WegelerRheingauRiesling a :Wine .
  • 也可以不用具体的类来定义:
    :HaraldSack a owl:NamedIndividual .
OWL谓词
存在两种变体:
  • 对象属性
  • 数据类型属性
对象属性的定义
  • 对象属性Object properties的定义:
    :isMadeFrom a owl:ObjectProperty .
  • 对象属性的领域和范围定义

    :isMadeOf a owl:ObjectProperty ;
              rdfs:domain :Wine ;
              rdfs:range :Grapes .
描述逻辑中的定义:
Domain: ∃isMadeOf. ⊤ ⊑ Wine
Range: ⊤ ⊑ ∀ isMadeOf.Grapes
 
数据类型属性的定义:
  • 定义:

    :hasVintageYear a owl:DatatypeProperty.
  • 领域和范围定义:

    :hasVintageYear a owl:DatatypeProperty ;
                    rdfs:domain :Wine ;
                    rdfs:range xsd:integer .
很多XML数据类型都是可以使用的。
 
类的层次:
:Wine a owl:Class ;
       rdfs:subClassOf :AlcoholicBeverage .
:AlcoholicBeverage a owl:Class ;
       rdfs:subClassOf :Beverage .
:Beverage a owl:Class .
  • Wine ⊑ AlcoholicBeverage
  • AlcoholicBeverage ⊑ Beverage
类的不相交
:AlcoholicBeverage owl:disjointWith :MainDish .
  • AlcoholicBeverage ⊓ MainDish ⊑ ⊥
便捷地定义一系列不相交的类:
[] a owl:AllDisjointClasses ;
                 owl:members
                     ( :Wine
                       :Beer
                       :SoftDrink
                       :Vegetables
                       :Seafood
                       :Meat ) .
类相等
:AlcoholicBeverage owl:equivalentClass :Liquor .
  • AlcoholicBeverage ≡ Liquor

L5-6 知识表达——网络本体语言OWL 第三部分

个体之间的关系:
  • 相同owl:sameAs
  • 不同owl:differentFrom

    [] a owl:AllDifferent ;
    owl:distinctMembers
    (:......).
  • 包含owl:oneOf  ⊑
  • 相交owl:intersectionOf  ⊓
  • owl:unionOf  ⊔
  • 补充owl:complementOf  ¬
OWL属性限定 
  • 对值的限定

    owl:hasValue 用一个常量来做限定
    owl:allValuesFrom 将一个类中的所有实例作为取值范围
    owl:someValuesFrom 一个类中的有些实例作为取值范围
  • 对基数的限定

    owl:cardinality 限定一个特定值
    owl:minCardinality 最小值
    owl:maxCardinality最大值

L5-7 知识表达——网络本体语言OWL 第四部分

谓词的关系
  • 谓词的层次

    rdfs:subPropertyOf
  • 谓词的inverse

    owl:inverseOf
  • 谓词的相等

    owl:equivalentProperty
  • 谓词的传递性

    owl:TransitiveProperty
  • 对称谓词

    owl:SymmetricProperty、owl:ReflexiveProperty、owl:IrreflexiveProperty
  • 函数谓词

    owl:FunctionalProperty
  • 反函数谓词

    owl:InverseFunctionalProperty
  • 谓词不相交

    owl:propertyDisjointWith

    owl:AllDisjointProperties
    owl:members ( ... ) .
  • 全局和空谓词

    owl:topObjectProperty

    owl:bottomObjectProperty

    owl:topDatatypeProperty

    owl:bottomDatatypeProperty
OWL2的数量限制:

  • owl:maxQualifiedCardinality
  • owl:minQualifiedCardinality
  • owl:qualifiedCardinality
不相关
[] rdf:type owl:negativePropertyAssertion ;
          owl:sourceIndividual :Max ;
          owl:assertionProperty :isBrother ;
          owl:targetIndividual :Moritz .

L5-8 知识表达——网络本体语言OWL 第五部分 OWL 一般角色包含

负责角色/谓词可以通过简单角色/谓词(RBox)创建
 
一般谓词包含:
  • RBox的表达:R 1ºR  R3º.....º R n S
  • 语义:如果(x 0,x 1 ) R1I,(x 1 ,x2 ) ∈R2I... (xn-1 ,x n)  RnI ;则(x 0,x n ) SI
RBox的形式语言定义:
L ::= ab  L ::= aLb
变成:
R a º R ⊑ L  R a º º R⊑ L
 
带有一般谓词包含的OWL是不可决定的。
 
限制成一般RBox
  • 谓词名称遵从严格偏序
简单谓词限制,下面的表达只能对简单谓词使用
  • ≤n R.C and ≥n R.C 数量限制
  • 非自反的谓词
  • 非相交的谓词
  •  R.Self
  • ¬R(a,b)
OWL 允许 谓词链
:hasFriendsFoe a owl:ObjectProperty ;
          owl:PropertyChainAxiom ( :hasFriend :hasFoe ) .

L5-9 知识表达——规则和语义网

什么是规则?
对于规则的理解要看上下文
  • 一般推理
    Premise → Conclusion
  • 假说
    Cause → Effect
  • 产生式
    Condition → Action
规则种类:
  • 逻辑规则(一阶逻辑)
    G is equivalent with ¬F ∨ G
  • 程序性规则(例如产生式)
    If X then Y else Z
  • 逻辑编程规则(例如Prolog,F-Logic)
    "woman(X) <- person(X) AND NOT man(X)"
一阶逻辑作为一个规则语言(Horn Clause)霍恩子句
 
A 1 ∧ A ∧ . . . ∧ A  H
与以上等价于
¬A 1 ∨ ¬A ∨ . . . ∨ ¬A∨ H
 
非相交规则:多个非否定形式的原子的相交
A 1 ∧ A 2 ∧ . . . ∧ A → H ∨ H ∨ . . . ∨ H m
 
  • 子句clause
    原子公式或者非否原子公式的相交
  • 霍恩子句 horn clause
    有最多一个非否定原子的子句
  • 确定子句definite clause
    有且只有一个非否原子的子句
  • 事实fact
    由一个单独的非否原子构成的子句
DATALOG 是一个逻辑规则语言
DATALOG包括:
  • 不带函数符号的霍恩子句
  • 相与、常数、全局量化变量、谓词符号
DATALOG不包括:
  • 相交、否定、存在量词、函数符号
DATALOG 语法:
  • 术语
    常量c 变量v
  • 原子
    带有谓词p的术语p(t1,...,tn)
  • 规则
    ∀x1...∀xn (B1⋀...⋀Bn -> H)
  • 程序
DATALOG和OWL的组合:SWRL 语言 语义网规则语言
 
RIF 规则交互格式
组成:
  • RIF BLD(basic logic dialect) 语言标准
  • RIF-RDF/RIF-OWL 与已有的知识表达语言之间的互操作
  • RIF-PRD(Production Rules Dialect)产生式规则的标准
  • RIF-DTB(Data Type和 Builtins)
  • RIF-FLD(Framework of Logic Dialect)