欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【知识图谱】(三)知识图谱基础之OWL

程序员文章站 2022-06-12 17:17:33
...

OWL

OWL可以被视为是RDFS的拓展,用于对描述网络上资源的相互关系的RDF进行高层概念的定义,它有更全面的词汇表,为用户构建本体,标注数据提供了更强有力的工具,比如对称性,反射属性,属性链,自约束等。

OWL语言包括:

1.      OWLLite:是OWL DL的子集,表达能力最弱,它降低了OWL DL中的公理约束,推理高效,支持的基数约束只有0或1.

2.      OWLDL:将可判定推理能力和较强表达能力作为首要目标,包含OWL语言所有成分,但使用时有一定的约束。

3.      OWLFull:包含OWL的全部语言成分,并取消了OWL DL的约束,它将RDFS扩展为一个完备的本体语言,适合不需要可计算性保证但需要最强表达能力和完全*的用户。

以下是OWL本体头部声明

<owl:Ontologyrdf:about="">  //关于owl本体的声明,为空表示使用owl:Ontology的基准URI

<rdfs:comment>An example OWLontology</rdfs:comment>   //注释

<owl:priorVersion   //版本控制

rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031215/wine"/>

<owl:imports   //其他本体的嵌入,接受rdf:resource的参数

rdf:resource="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food"/>

 <rdfs:label>WineOntology</rdfs:label>  //对自然语言进行标注

 ...  

</owl:Ontology>

OWL中所有个体都是owl:Thing的成员,各个类都是owl:Thing的子类,可以通过声明ID来定义一个类:

<owl:Classrdf:ID="Winery"/>

<owl:Classrdf:ID="Region"/>

<owl:Classrdf:ID="ConsumableThing"/>

定义子类:

<owl:Classrdf:ID="PotableLiquid">

<rdfs:subClassofrdf:resource="#ConsumableThing" />

...

</owl:Class>

定义类的子体:

首先定义类:

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

定义一个个体:

<owl:thing rdf:ID="CabernetSauvignonGrape">

定义上述类的个体:

<owl:thingrdf:ID="#CabernetSauvignonGrape">

   <rdf:type rdf:resource="#WineGrape">

</owl:thing>

也等价于:

<WineGraperdf:ID="CabernetSauvignonGrape">

定义属性:

定义对象属性:

<owl:ObjectPropertyrdf:ID="madeFromGrape">  

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

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

 </owl:ObjectProperty>     

定义数据类型属性:

<owl:Classrdf:ID="VintageYear" />

 <owl:DatatypePropertyrdf:ID="yearValue">

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

    <rdfs:range rdf:resource="&xsd;positiveInteger"/>

</owl:DatatypeProperty> 

属性也可以像类一样定义层次结构:rdfs:subPropertyOf

属性特性:

1.传递属性:如果一个属性 P 被声明为传递属性,那么对于任意的 x,y 和 z: P(x,y) 与 P(y,z) 蕴含 P(x,z)

<owl:ObjectPropertyrdf:ID="locatedIn">

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

      <rdfs:domain rdf:resource="&owl;Thing" />

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

</owl:ObjectProperty>

<Regionrdf:ID="SantaCruzMountainsRegion">

       <locatedIn rdf:resource="#CaliforniaRegion" />

</Region>

<Regionrdf:ID="CaliforniaRegion">

       <locatedIn rdf:resource="#USRegion" />

</Region>

 

2.对称属性:如果一个属性 P 被声明为对称属性,那么对于任意的 x 和 y:P(x,y)当且仅当 P(y,x)

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

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

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

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

 </owl:ObjectProperty> 

<Regionrdf:ID="MendocinoRegion"> 

   <locatedIn rdf:resource="#CaliforniaRegion" />

   <adjancentRegion rdf:resource="#SonomaRegion />

</Region>

3.函数属性:如果一个属性 P 被标记为函数型属性,那么对于所有的 x, y, 和 z: P(x,y) 与 P(x,z) 蕴含 y = z

<owl:Classrdf:ID="VintageYear" />

<owl:ObjectPropertyrdf:ID="hasVintageYear">

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

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

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

</owl:ObjectProperty>

4.逆属性:如果一个属性 P1 被标记为属性 P2 的逆(owl:inverseOf), 那么对于所有的 x 和 y: P1(x,y) 当且仅当 P2(y,x)

请注意 owl:inverseOf 的语法,它仅仅使用一个属性名作为参数。A 当且仅当 B 意思是 (A 蕴含 B)并且(B 蕴含 A).

<owl:ObjectPropertyrdf:ID="hasMaker">

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

</owl:ObjectProperty>

<owl:ObjectPropertyrdf:ID="producesWine">

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

</owl:ObjectProperty>

5.反函数属性:如果一个属性 P 被标记为反函数型的(InverseFunctional),那么对于所有 的 x, y 和 z: P(y,x) 与 P(z,x) 蕴含 y = z

<owl:ObjectPropertyrdf:ID="hasMaker" />

<owl:ObjectPropertyrdf:ID="producesWine">

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

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

</owl:ObjectProperty>

属性限制:

在owl:Restriction的上下文中,我们还能对属性的值域(range)进行进一步的限制

1.allValueFrom someValueFrom

注意这两个属于的限制是局部的,而之前domain,range的限制是全局的——也就是说对于这个属性的所有实例都必须满足range的限制。而allValueFrom和someValueFrom则要求:对于每一个有指定属性实例的类实例,该属性的值必须是由 owl:allValuesFrom 从句指定的类的成员.

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

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

     ...  

     <rdfs:subClassOf>

          <owl:Restriction>

                <owl:onPropertyrdf:resource="#hasMaker" />  //对"hasMaker"属性进行限制

                <owl:allValuesFromrdf:resource="#Winery" />  //所有的wine类实例的hasMaker属性的值都必须是Winery的实例

           </owl:Restriction>

    </rdfs:subClassOf>

      ...

</owl:Class>

如果把上述的allValueFrom 换成 someValueFrom则表明:  至少有一个wine类实例的hasMaker属性的值是Winery类的实例

可以把allValueFrom 和someValueFrom 的差别理解为全称量词和存在量词的差别

2.基数限制:这一约束允许对一个关系中的元素数目作出精确的限制

<owl:Classrdf:ID="Vintage">

   <rdfs:subClassOf>

     <owl:Restriction>

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

        <owl:cardinalityrdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>

    </owl:Restriction>

  </rdfs:subClassOf>

</owl:Class>

上述owl:cardinality限制使hasVintageYear属性只有一个值,即每个Vintage类实例只有一个VintageYear

另外,类似的两个限制:

owl:maxCardinality

owl:minCardinality

则分别用来限定值个数的上界和下界

3.hasValue:hasValue 使得我们能够根据“特定的”属性值的存在来标识类。因此,一个个体只要至少有“一个”属性值等于hasValue的资源,这一个体就是该类的成员。

<owl:Classrdf:ID="Burgundy">

  <rdfs:subClassOf>

     <owl:Restriction>

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

     <owl:hasValue rdf:resource="#Dry" />

    </owl:Restriction>

 </rdfs:subClassOf>

</owl:Class>

只有实例的hasSugar属性等于"Dry",那么它就是类BurGundy的成员

本体映射:

1.类和属性之间的等价关系:equivalentClass,equivalentProperty

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

       <owl:equivalentClass rdf:resource="&vin;Wine"/>

 </owl:Class>

<owl:Classrdf:ID="TexasThings">

    <owl:equivalentClass>

          <owl:Restriction>

                   <owl:onPropertyrdf:resource="#locatedIn" />

                   <owl:someValuesFromrdf:resource="#TexasRegion" />

          </owl:Restriction>

     </owl:equivalentClass>

</owl:Class>

2.相同的个体

<Winerdf:ID="MikesFavoriteWine">

     <owl:sameAs rdf:resource="#StGenevieveTexasWhite" />

</Wine>

3.不同的个体:

<WineSugar rdf:ID="Dry" />

<WineSugar rdf:ID="Sweet">

        <owl:differentFrom rdf:resource="#Dry"/>

</WineSugar>

<WineSugar rdf:ID="OffDry">

          <owl:differentFrom rdf:resource="#Dry"/>

<owl:differentFromrdf:resource="#Sweet"/> </WineSugar>

集合运算符:

交运算符IntersectionOf, 并运算符unionOf, 补运算符complementOf

相关标签: 知识图谱