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>