OWL语言

OWL语言

RDF, RDFS表达能力有限,RDFS局限于子类分层和属性分层,以及属性的定义域和值域的限定。

一些语义网特征用例需要更强的表达能力,所以OWL(Web Ontology Language),

一种表达能力更强的本地语言被提出来。OWL以RDF和RDFS为基础,使用基于XML的RDF语法。

头部

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#">
</rdf:RDF>

类元素

类之间有子类关系,不相容关系, 相等关系

<!--定义了子类关系-->
<owl:Class rdf:ID=“副教授”>
	<rdfs:subClassof rdf:resource="#教师"/>
</owl:Class>


<!--不相容关系-->
<owl:Class rdf:about="#副教授">
    <owl:disjointWith rdf:resource="#教授"/>
    <owl:disjointWith rdf:resource="#助理教授"/>
</owl:Class>


<!--相等关系-->
<owl:Class rdf:ID="教师">
    <owl:equivalentClass rdf:resource="#教员"/>
</owl:Class>

属性

OWL中有两种属性,一种是对象属性,一种是数据类型属性

对象属性:将对象相互关联,例如监督(谁 监督 谁),

数据类型属性:将对象与数据类型值关联起来,例如电话,年龄等

例如下面定义的年龄,这个数据类型值

<owl:DatatypeProperty rdf:ID="年龄">
     <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#nonNegativeInteger"/>
</owl:DatatypeProperty>

属性约束

OWL语言中的属性约束是重点,极大得增强了OWL语言的表达能力。

  • 声明类满足某些条件,也就是声明类是满足这些条件类的子类

    其中owl:allValuesFrom用来规定owl:onProperty指定属性(由…讲授)的所有可能取值范围

    owl:hasValue用来规定owl:onProperty必须取规定的特定值。

    owl:someValueFrom用来规定一部分可能的取值范围。

    <!--所有可能取值范围,意思就是一年级的课程必须由教授来讲授-->
    <owl:Class rdf:about="#一年级课程">
    	<rdfs:subClassOf>
    		<owl:Restriction>
    			<owl:onProperty rdf:resource="#由..讲授"/>
    			<owl:allValuesFrom rdf:resource="#教授"/>
    		</owl:Restriction>
    	</rdfs:subClassOf>
    </owl:Class>
    
    <!--数学课必须由编号为948352的这位老师来讲授-->
    <owl:Class rdf:about="#数学课">
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#由...讲授"/>
               	<owl:hasValue rdf:resource="#948352"/>    
            </owl:Restriction>
        </rdfs:subClassOf>
    </owl:Class>
    
    <!--所有老师都至少要教授一门本科课程-->
    <owl:Class rdf:about="#教员">
        <rdfs:subClassOf>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#讲授"/>
                <owl:someValuesFrom rdf:resource="#本科课程"/>
            </owl:Restriction>
        </rdfs:subClassOf>
    </owl:Class>
    
  • 基数约束

    owl:minCardinality, owl:maxCardinality用来实现基数约束

    <!--一个系至少有10个成员,至多有30个成员-->
    <owl:Class rdf:about="#系">
        <rdfs:subClassOf>
        	<owl:Restriction>
                <owl:onProperty rdf:resource="#成员"/>
                <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">
                    10
                </owl:minCardinality>
            </owl:Restriction> 
        </rdfs:subClassOf>    
        </rdfs:subClassOf>
        	<owl:Restriction>
                <owl:onProperty rdf:resource="#成员"/>
                <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">
                    30
                </owl:minCardinality>
            </owl:Restriction> 
        <rdfs:subClassOf>
    </owl:Class>
    

特殊性质

  • owl:TransitiveProperty定义传递性,例如优于高于祖先

  • owl:SymmetricProperty定义对称性,例如同年级同胞兄弟

  • owl:FunctionProperty定义函数性,定义函数性,可能有点难理解,其实更数学上的函数

    定义差不多,规定一个属性对任何对象最多只能取一个值,如年龄,身高

  • owl:InverseFunctionalProperty定义逆函数性,即规定一个属性对不同的对象不能取

    相同的值,例如身份证号。定义了属性值的唯一性

    例子

    <owl:ObjectProperty rdf:ID="同年级">
      <rdf:type rdf:resource="&owl;TransitiveProperty"/>
      <rdf:type rdf:resoure="&owl;SymmetricProperty"/>
      <rdf:domain rdf:resource="#学生"/>
      <rdf:range rdf:resource="#学生"/>
    </owl:ObjectProperty>  
    

布尔组合

布尔组合就是表达类之间的并交补关系

  • 补的关系,就是一种不相容关系,owl:disjointWith也可以达到相同的目的。

    <owl:Class rdf:about="#课程">
    	<rdfs:subClassOf>
            <owl:Class>
                <owl:complementOf rdf:resource="#教工"/>
            </owl:Class>
        </rdfs:subClassOf>
    </owl:Class>
    
  • 并的关系用owl:unionOf定义

    <owl:Class rdf:ID="大学人员">
        <owl:unionOf rdf:parseType="Collection">
            <owl:Class rdf:about="#教工"/>
            <owl:Class rdf:about="#学生"/>
        </owl:unionOf>
    </owl:Class>
    
  • 交的关系用owl:intersectionOf

    <!--计算机系的老师必须同时满足是教师,并且属于计算机系这两个条件-->
    <owl:Class rdf:ID="计算机系老师">
        <owl:intersectionOf rdf:parseType="Collection">
            <owl:Class rdf:about="#教师"/>
            <owl:Restriction>
                <owl:onProperty rdf:resource="#属于"/>
                <owl:hasValue rdf:resource="#计算机系"/>
            </owl:Restriction>
        </owl:intersectionOf>
    </owl:Class>
    

枚举

owl:oneOf定义枚举类

<owl:Class rdf:ID="星期">
    <owl:oneOf rdf:parseType="Collection">
        <owl:Thing rdf:about="#星期一"/>
        <owl:Thing rdf:about="#星期二"/>
        <owl:Thing rdf:about="#星期三"/>
        <owl:Thing rdf:about="#星期四"/>
        <owl:Thing rdf:about="#星期五"/>
        <owl:Thing rdf:about="#星期六"/>
        <owl:Thing rdf:about="#星期七"/>
    </owl:oneOf>
</owl:Class>

猜你喜欢

转载自blog.csdn.net/zycxnanwang/article/details/86557350
owl