枚舉(Enumerated)
在OWL中, 枚舉分爲兩種:枚舉數據類型和枚舉類.
1. 枚舉數據類型(Enumerated Datatype)
在OWL中,除了可以使用RDF Datatypes之外,還可以通過Enumerated Datatype來定義一個屬性的值域。
Enumerated Datatype使用owl:oneOf來構建。構建的時候, owl:oneOf的subject是一個owl:DataRange的空白節點,object是
由rdf:first, rdf:rest和rdf:nil形成的一個Literal List.
例如: 定義一個屬性tennisGameScore的值域是由{0, 15, 30, 40}組成的OWL定義如下,
<owl:DatatypeProperty rdf:ID="tennisGameScore">
<rdfs:range>
<owl:DataRange>
<owl:oneOf>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">0</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">15</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">30</rdf:first>
<rdf:rest>
<rdf:List>
<rdf:first rdf:datatype="&xsd;integer">40</rdf:first>
<rdf:rest rdf:resource="&rdf;nil" />
</rdf:List>
</rdf:rest>
</rdf:List>
</rdf:rest>
</rdf:List>
</rdf:rest>
</rdf:List>
</owl:oneOf>
</owl:DataRange>
</rdfs:range>
</owl:DatatypeProperty>
2. 枚舉類
OWL提供了一種通過直接枚舉類的成員的方法來描述類。這是通過使用oneOf結構來完成。特別地,這個定義完整地描述了類的
外延,因此任何其他個體都不能被聲明爲屬於這個類。
下面的例子定義了WineColor類,它的成員是White,Rose和Red這三個個體.
<owl:Class rdf:ID="WineColor">
<owl:oneOf rdf:parseType="Collection">
<owl:Thing rdf:about="#White"/>
<owl:Thing rdf:about="#Rose"/>
<owl:Thing rdf:about="#Red"/>
</owl:oneOf>
</owl:Class>
看到上面的定義,第一件想到的事情就是由於這個類是通過枚舉定義的,因此其他任何個體都不可能是一個有效的WineColor。
oneOf結構的每一個元素都必須是一個有效聲明的個體。