语义WEB之OWL[A Semantic Web Primer阅读笔记]

1. RDF一般限于指定二元谓词关系,RDFS一般限于指定类和属性的层次关系还有定义于这些属性之上的domain和range。需要这样的本体语言,让用户显示的书写正式概念化的领域模型,这就需要这种语言具有定义良好的语法、有效的推理能力、正式的语义、有效的表达能力和方便表达。

2. 对语义和推理的支持一般是要把本体语言映射到逻辑形式上去,通过在这些逻辑形式上的自动推理工具完成语义化。OWL一般映射到描述逻辑,可以使用FaCT和RACER等工具进行推理。描述逻辑是谓词逻辑的子集,基于它能够有效的完成推理(注:谓词逻辑过于庞大复杂,horn子句也是目前被广泛使用的推理语言,它也是谓词逻辑的子集)。

3. RDF和RDFS在表示语义上还有以下不足:

属性作用在局部范围:比如我们需要表达”牛吃草其他动物吃肉“就很难;

类别不相交;

对类别的布尔操作,比如人是男人或女人;

数量限制:比如一个人只有两个父母等;

关于属性的其他特性,比如传递性,反属性(吃与被吃),唯一性等等

OWL是RDFS的扩展,所以其能兼容RDF和RDFS。

4. OWL的三个子语言

OWL Full

它使用所有OWL的原语,他允许与RDF和RDFS和任意结合。它的优点是无限的兼容RDF和RDFS(任何合法的RDF文档都是合法的OWL Full文档,任何合法的RDFS文档都是合法的OWL Full文档),缺点是太过庞大,不容易操作,完全支持很难。

OWL DL

DL是Description Logic的缩写。优先是能够有效的支持推理,缺点是不能够完全兼容RDF。但是每个合法的OWL DL文档都是一个合法的RDF文档。

OWL Lite

OWL Lite是对OWL DL做了限制的子语言。

OWL仍然使用RDF的语法

5. OWL语言的说明

<rdf:RDF

     xmlns:owl ="http://www.w3.org/2002/07/owl#"

     xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

     xmlns:xsd ="http://www.w3.org/2001/XMLSchema#">

一个OWL本体以<owl:Ontology>开头,下面是一个例子

<owl:Ontology rdf:about="">

     <rdfs:comment>An example OWL ontology</rdfs:comment>

     <owl:priorVersion

          rdf:resource="http://www.mydomain.org/uni-ns-old"/>

      <owl:imports

          rdf:resource="http://www.mydomain.org/persons"/>

     <rdfs:label>University Ontology</rdfs:label>

</owl:Ontology>

注意owl:imports具有传递性,它会引入被引入引入的东东。

类元素

owl:Class是rdfs:Class的子类。

<owl:Class rdf:about="#associateProfessor">

     <owl:disjointWith rdf:resource="#professor"/>

     <owl:disjointWith rdf:resource="#assistantProfessor"/>

</owl:Class>

<owl:Class rdf:ID="faculty">

     <owl:equivalentClass rdf:resource="#academicStaffMember"/>

</owl:Class>

有两个预定义的类别:owl:Thing 和 owl:Nothing。前者是最通用的类,后者是空类,因此任何类都是前者的子类后者的父类。

属性元素

在OWL中有以下属性:

对象属性,它表示该对象与其他对象的关系;

数据类型属性,它表示该对象与不同类型值的关系,比如phone,title,age等

类型属性的例子

<owl:DatatypeProperty rdf:ID="age">

     <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema

          #nonNegativeInteger"/>

</owl:DatatypeProperty>

对象属性的例子

<owl:ObjectProperty rdf:ID="isTaughtBy">

     <rdfs:domain rdf:resource="#course"/>

     <rdfs:range rdf:resource="#academicStaffMember"/>

     <rdfs:subPropertyOf rdf:resource="#involves"/>

</owl:ObjectProperty>

逆属性的例子

<owl:ObjectProperty rdf:ID="teaches">

     <rdfs:range rdf:resource="#course"/>

     <rdfs:domain rdf:resource="#academicStaffMember"/>

     <owl:inverseOf rdf:resource="#isTaughtBy"/>

</owl:ObjectProperty>

相等属性的例子

<owl:ObjectProperty rdf:ID="lecturesIn">

     <owl:equivalentProperty rdf:resource="#teaches"/>

</owl:ObjectProperty>

属性限制Property Restrictions

让类别满足某些限制也就是让其属于满足这些限制类的子类。

<owl:Class rdf:about="#firstYearCourse">

     <rdfs:subClassOf>

          <owl:Restriction>

               <owl:onProperty rdf:resource="#isTaughtBy"/>

               <owl:allValuesFrom rdf:resource="#Professor"/>

          </owl:Restriction>

     </rdfs:subClassOf>

</owl:Class>

特别属性Special Properties

owl:TransitiveProperty,具有传递性的属性

owl:SymmetricProperty,对称属性

owl:FunctionalProperty,函数属性,比如年龄,高度等等

owl:InverseFunctionalProperty,表示两个不同的对象不能又相同的值,比如身份证号码isTheSocialSecurityNumberfor

<owl:ObjectProperty rdf:ID="hasSameGradeAs">

<rdf:type rdf:resource="&owl;TransitiveProperty" />

     <rdf:type rdf:resource="&owl;SymmetricProperty" />

     <rdfs:domain rdf:resource="#student" />

     <rdfs:range rdf:resource="#student" />

</owl:ObjectProperty>

布尔组合Boolean Combinations

<owl:Class rdf:about="#course">

     <rdfs:subClassOf>

          <owl:Class>

               <owl:complementOf rdf:resource="#staffMember"/>

          </owl:Class>

     </rdfs:subClassOf>

</owl:Class>

<owl:Class rdf:ID="peopleAtUni">

     <owl:unionOf rdf:parseType="Collection">

          <owl:Class rdf:about="#staffMember"/>

          <owl:Class rdf:about="#student"/>

     </owl:unionOf>

</owl:Class>

还有owl:intersectionOf等标签

枚举Enumerations

<owl:Class rdf:ID="weekdays">

     <owl:oneOf rdf:parseType="Collection">

          <owl:Thing rdf:about="#Monday"/>

          <owl:Thing rdf:about="#Tuesday"/>

          <owl:Thing rdf:about="#Wednesday"/>

          <owl:Thing rdf:about="#Thursday"/>

          <owl:Thing rdf:about="#Friday"/>

          <owl:Thing rdf:about="#Saturday"/>

          <owl:Thing rdf:about="#Sunday"/>

     </owl:oneOf>

</owl:Class>

实例Instances

<academicStaffMember rdf:ID="949352">

     <uni:age rdf:datatype="&xsd;integer">39</uni:age>

</academicStaffMember>

6. OWL DL使用限制

任何资源只允许是a class, a data type, a data type property, an object property, an individual, a data value, or part of the built-in vocabulary。并且不允许同时属于两个。

显示的定义类别信息。

属性分离,对象属性和数据属性是不同的。

传递性属性没有数量限制。

匿名类只允许在以下情况下使用:Anonymous classes are only allowed to occur as the domain and range of either owl:equivalentClass or owl:disjointWith, and as the range (but not the domain) of rdfs:subClassOf.

7. OWL Lite必须满足OWL DL的所有限制并满足如下限制

以下不允许使用The constructors owl:oneOf, owl:disjointWith, owl:unionOf, owl:complementOf, and owl:hasValue。

基数限制Cardinality statements ( minimal, maximal, and exact cardinality)只能使用0,1。

owl:equivalentClass不允许在匿名类中使用。

8. OWL是采用开放世界假设的,但是有的时候明显封闭世界假设更适合。OWL不做唯一名字假设(允许不同URI的实体是相同的)。

一般情况下,数据库和逻辑编程系统支持封闭世界和唯一命名假设;而知识表示系统和理论证明需要开放世界和非唯一命名假设。本体有时候需要前者有时候需要后者。

9. OWL中的OWL

命名空间

<?xml version="1.0"?>

<!DOCTYPE owl [

     <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#">

     <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#">

     <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">

     <!ENTITY owl "http://www.w3.org/2002/07/owl#"> ]>

<rdf:RDF

     xml:base ="http://www.w3.org/2002/07/owl"

     xmlns ="&owl;"

     xmlns:owl ="&owl;"

     xmlns:rdf ="&rdf;"

     xmlns:rdfs="&rdfs;"

     xmlns:dc ="http://purl.org/dc/elements/1.1/">

类别的类别Classes of Classes (Metaclasses)

Class也是一种Class

<rdfs:Class rdf:ID="Class">

     <rdfs:label>Class</rdfs:label>

     <rdfs:comment>The class of all OWL classes</rdfs:comment>

     <rdfs:subClassOf rdf:resource="&rdfs;Class"/>

</rdfs:Class>

Thing和Nothing

<Class rdf:ID="Thing">

     <rdfs:label>Thing</rdfs:label>

     <unionOf rdf:parseType="Collection">

          <Class rdf:about="#Nothing"/>

          <Class>

               <complementOf rdf:resource="#Nothing"/>

          </Class>

     </unionOf>

</Class>

<Class rdf:ID="Nothing">

     <rdfs:label>Nothing</rdfs:label>

     <complementOf rdf:resource="#Thing"/>

</Class>

类别相等

<rdf:Property rdf:ID="EquivalentClass">

     <rdfs:label>EquivalentClass</rdfs:label>

     <rdfs:subPropertyOf rdf:resource="&rdfs;subClassOf"/>

     <rdfs:domain rdf:resource="#Class"/>

     <rdfs:range rdf:resource="#Class"/>

</rdf:Property>

<rdf:Property rdf:ID="EquivalentProperty">

     <rdfs:label>EquivalentProperty</rdfs:label>

     <rdfs:subPropertyOf rdf:resource="&rdfs;subPropertyOf"/>

</rdf:Property>

<rdf:Property rdf:ID="disjointWith">

     <rdfs:label>disjointWith</rdfs:label>

     <rdfs:domain rdf:resource="#Class"/>

     <rdfs:range rdf:resource="#Class"/>

</rdf:Property>

sameAs是sameIndividualAs的同义词

<rdf:Property rdf:ID="sameAs">

     <rdfs:label>sameAs</rdfs:label>

          <EquivalentProperty rdf:resource="#sameIndividualAs"/>

</rdf:Property>

其实都是对一些类别和属性进行定义和声明。

完整的语义描述需要查看说明文档(OWL标准)。

你可能感兴趣的:(Prim)