基本元素 Basic Elements

1簡單的 Class 及 Individual

1-1. Class

在 OWL的世界裡,每個Individual 都是 owl:Thing 的成員,也就是說每個自訂的Class都是 owl:Thing 的 subClass

簡單的 Class 範例:

<owl:Class rdf:ID="Winery"/> 
<owl:Class rdf:ID="Region"/> 
<owl:Class rdf:ID="ConsumableThing"/>

rdf:ID 表示這個Class的名稱

Class建立後,其他的Ontology如果要參照這邊的Class, 以上面中的 Region 來說,就可以使用 ref:resource="#Region" ,不過正常應該會用完整的URI,如 http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Region

如以下範例中:

<owl:Class rdf:ID="Wine"> 
  <rdfs:subClassOf rdf:resource="&food;PotableLiquid"/> 
  <rdfs:label xml:lang="en">wine</rdfs:label> 
  <rdfs:label xml:lang="fr">vin</rdfs:label> 
  ...  
</owl:Class> 

<owl:Class rdf:ID="Pasta">
  <rdfs:subClassOf rdf:resource="#EdibleThing" />
  ...
</owl:Class>

另一個參照(reference)的作法則是使用 rdf:about="$Region",可以用來擴展(extend)這個資源的定義。即可以再不修改原始資源的狀況下增加新的結構。

rdfs:label 用來提供人類可讀的名稱

Class , rdfs:subClassOf

1-2.Individuals

直接看範例,下面範例定義了 CenteralCoastRegion 的 Thing,他是 #Region 的成員之一

<owl:Thing rdf:ID="CentralCoastRegion" /> 

<owl:Thing rdf:about="#CentralCoastRegion"> 
   <rdf:type rdf:resource="#Region"/> 
</owl:Thing>

rdf:type 用來把一個 Individual 與 一個Class 關連起來,

2.簡單的 Property

ObjectProperty, DatatypeProperty, rdfs:subPropertyOf,rdfs:domain, rdfs:range

property 是 一個二元關連。分成兩種:

  • datatype : 用來把Class的實例(instance) 與 RDF literals 或 XML Schema datatype 關連起來
  • object:把兩個Class 關連起來。

範例:

<owl:ObjectProperty rdf:ID="madeFromGrape"> 
  <rdfs:domain rdf:resource="#Wine"/>
  <rdfs:range rdf:resource="#WineGrape"/> 
</owl:ObjectProperty> 

<owl:ObjectProperty rdf:ID="course">
  <rdfs:domain rdf:resource="#Meal" />
  <rdfs:range rdf:resource="#MealCourse" />
</owl:ObjectProperty>

madFromGrape 實際上把 Wine 以及 WineGrape 關連起來了,course 則把 Meal 與 MealCourse 關連起來
即 Wine - madeFromGrape - WineGrape 是一個 tripple

Meal - cource - MealCourse 也是一個 tripple

Property 也如同Class 一樣,可以有層級(hierarchy)

<owl:Class rdf:ID="WineDescriptor" />

<owl:Class rdf:ID="WineColor">
  <rdfs:subClassOf rdf:resource="#WineDescriptor" />
  ...
</owl:Class>

<owl:ObjectProperty rdf:ID="hasWineDescriptor">
  <rdfs:domain rdf:resource="#Wine" />
  <rdfs:range  rdf:resource="#WineDescriptor" />
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="hasColor">
  <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" />
  <rdfs:range rdf:resource="#WineColor" />
  ...
</owl:ObjectProperty>

hasColor 是 hasWineDescriptor 的 subProperty

然後也可以加一些限制,

<owl:Class rdf:ID="Wine"> 
  <rdfs:subClassOf rdf:resource="&food;PotableLiquid"/> 
  <rdfs:subClassOf>
    <owl:Restriction> 
      <owl:onProperty rdf:resource="#madeFromGrape"/>
      <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
    </owl:Restriction> 
  </rdfs:subClassOf>
  ...  
</owl:Class>

上面範例中 使用了匿名 Class(_anonymous _classes) , 即下面這一段

<owl:Restriction> 
  <owl:onProperty rdf:resource="#madeFromGrape"/>
  <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>

results matching ""

    No results matching ""