Szkoła Web 3.0 Dowiedz się czym jest Sieć Semantyczna

26paź/09Off

Tworzymy lekkie ontologie sieciowe z OWL Lite

owl-lite
W jednym z poprzednich artykułów opisaliśmy język OWL rekomendowany przez W3C do opisu ontologii sieciowych. W tym artykule omówimy podstawowe mechanizmy najprostszej wersji tego języka: OWL Lite. W następnych artykułach przedstawimy dwie lekkie ontologie: FOAF i SIOC, które wykorzystują pewne pojęcia z OWL Lite.

owl-lite2

OWL Lite rozszerza zestaw pojęć zdefiniowany przez RDF Schema o mechanizmy umożliwiające na bardziej precyzyjne definiowanie znaczenia właściwości i klas:

  • podobieństwa elementów zdefiniowanych w ontologii:
    • aby określić, że dwie klasy lub właściwości są sobie równe korzystamy (odpowiednio) z equivalentClass i equivalentProperty. Równość w przypadku klas oznacza, że instancje należące do jednej należą jednocześnie do drugiej. Podobnie zdefiniowane równości właściwości oznacza, że połączenie dwóch instancji jedną z właściwości podpowiada, że są one połączone jednocześnie drugą z równych sobie właściwości. Poniższy przykład w pseudo-RDF prezentuje równoznaczność klas:
      [semschool:Grzejnik] [rdf:type] [rdfs:Class].
      [semschool:Kaloryfer] [rdf:type] [rdfs:Class].
      [semschool:Grzejnik] [owl:equivalentClass] [semschool:Kaloryfer].
    • aby określić, że dwie instancje są sobie równe (takie same) lub zupełnie różne, korzystamy (odpowiednio) z sameAs i differentFrom.
      [semschool:Fiat126p] [rdf:type] [semschool:Samochod].
      [semschool:Maluch] [rdf:type] [semschool:Samochod].
      [semschool:Linea] [rdf:type] [semschool:Samochod].
      [semschool:Fiat126p] [semschool:sameAs] [semschool:Maluch].
      [semschool:Linea] [semschool:differentFrom] [semschool:Maluch].
    • możemy też za pomocą pojedynczego opisu określić, że wszystkie instancje w danym zestawie są wzajemnie różne, korzystając z pojęć AllDifferent i distinctMembers. Poniższy przykład w zapisie RDF/XML prezentuje użycie pojęcia AllDifferent i distinctMembers:
      <owl:AllDifferent>
        <owl:distinctMembers rdf:parseType="Collection">
          <semschool:Samochod rdf:about="#Maluch" />
          <semschool:Samochod rdf:about="#Linea" />
          <semschool:Samochod rdf:about="#Sedici" />
        </owl:distinctMembers>
      </owl:AllDifferent>
  • typy właściwości:
    • OWL Lite umożliwia zdefiniowanie wzajemnie odwrotnych właściwości za pomocą pojęcia inverseOf, np.:
      [semschool:produkuje] [rdf:type] [rdf:Property].
      [semschool:jestProdukowany] [rdf:type] [rdf:Property].
      [semschool:produkuje] [owl:inverseOf] [semschool:jestProdukowany].
    • OWL Lite umożliwia również zdefiniowane typu właściwości:
      • DatatypeProperty - obiekty w zdaniu, w którym są zdefiniowane dane właściwości, są literałami a nie obiektami
      • TransitiveProperty - dana właściwość jest przechodnia, tzn. z tego że [A] [powiązane] [B]. i [B] [powiazane] [C] wynika [A] [powiązane] [C]
      • SymetricProperty - dana właściwość jest symetryczna, tzn. z tego, że [A] [powiązane] [B] wynika [B] [powiązane] [C].
      • FunctionalProperty - dla danego podmiotu w zdaniu z tą właściwością, może istnieć tylko jeden obiekt (wartość).
      • InverseFunctionalProperty - oznacza, że dla danego obiektu w zdaniu z tą właściwością, może istnieć tylko jeden podmiot. Jest to niesamowicie ważna właściwość, gdyż jej zidentyfikowanie w ontologii umożliwia wnioskowanie, że dwa zasoby o róznych URI, są w rzeczywistości tym samym zasobem.
  • ograniczenia na wykorzystanie właściwości przez instancje:
    • możemy zdefiniować, że wszystkie obiekty powiązane daną właściwością są określonego typu, np.:
      <owl:Class rdf:ID="Samochod">
        ...
        <rdfs:subClassOf>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#maProducenta" />
            <owl:allValuesFrom rdf:resource="#FabrykaSamochodow" />
          </owl:Restriction>
        </rdfs:subClassOf>
        ...
      </owl:Class>
    • możemy zdefiniować, że conajmniej jeden z obiektów powiązanych daną właściwością jest określonego typu, np.:
      <owl:Class rdf:ID="Samochod">
        ...
        <rdfs:subClassOf>
          <owl:Restriction>
            <owl:onProperty rdf:resource="#dostawcaCzesci" />
            <owl:someValuesFrom rdf:resource="#FabrykaOpon" />
          </owl:Restriction>
        </rdfs:subClassOf>
        ...
      </owl:Class>
    • możemy również określić oczekiwaną ilość właściwości, lub zdefiniować minimalne lub maksymalne ograniczenie na ilość właściwości dla danego podmiotu; do tego celu korzystamy (odpowiednio) z pojęć: cardinality, minCardinality, maxCardinality.
  • definiowanie przecięć zbiorów klas i właściwości - korzystamy z pojęcia intersectionOf, jak w poniższym przykładzie:
    <owl:Class rdf:ID="BialySamochod">
      <owl:intersectionOf rdf:parseType="Collection">
        <owl:Class rdf:about="#Samochod" />
        <owl:Restriction>
          <owl:onProperty rdf:resource="#maKolor" />
          <owl:hasValue rdf:resource="#Bialy" />
        </owl:Restriction>
      </owl:intersectionOf>
    </owl:Class>
Tagged as: , , , Komentarze