Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_hml_rules:owl [2008/05/03 13:06] miw |
pl:miw:miw08_hml_rules:owl [2008/05/19 12:09] miw |
**OWL - Web Ontology Language** jest językiem ze składnią opartą na XML, a semantyką opartą na tzw. logice deskrypcyjnej (ang. description logics). Stanowi on rozszerzenie [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:rdf|RDF (ang. Resource Description Framework)]]. Służy do reprezentacji i przetwarzania danych w sieci WWW. OWL umożliwia opisywanie danych w postaci ontologii i budowanie w ten sposób tzw. Semantycznego Internetu. OWL posiada trzy podjęzyki o wzrastającej ekspresyjności: OWL Lite, OWL DL, and OWL Full. Zapis w języku OWL składa się z definicji ontologicznych metadanych (container), definicji | |
relacji binarnych, pojęć, przykładów pojęć oraz aksjomatów definiujących omówione dodatkowe | |
właściwości pojęć i relacji. | |
| |
[[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:owl:syntax|Kilka słów o OWL syntax]] | |
| |
Ponieważ OWL posiada pewne ograniczenia - nie można uchwycić złożonych relacji pomiędzy zdefiniowanymi właściwościami (chociażby ogólnie znany przykład "uncle") - powstała idea rozszerzenia OWL'a o pewne formy regułowe przy jednoczesnym zachowaniu maksymalnej kompatybilności z istniejącą składnią i semantyką OWL. | |
| |
Obecnie istnieje propozycja języka **[[http://www.daml.org/2003/11/swrl/|SWRL - Semantic Web Rule Language]]** (początkowo nazwany ORL - OWL Rules Language) opartego na połączeniu podjęzyków OWL DL i OWL Lite języka OWL z fragmentami języka [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:ruleML|RuleML (Rule Markup Language)]]. Propozycja ta rozszerza zbiór aksjomatów zapisanych w języku OWL tak, aby obejmował reguły mające postać klauzul. Pozwala to łączyć takie reguły z bazą wiedzy zapisaną w języku OWL. Proponowane reguły mają postać implikacji pomiędzy poprzednikiem (ciałem) i następnikiem (nagłówkiem). Poprzednik i następnik mogą być zbudowane z koniunkcji atomów, pojedynczego atomu albo być puste. (Wiadomo, że regułę zawierającą koniunkcję w następniku można przekształcić w zestaw reguł zawierających tylko jeden atom w następniku). Reguła ma następujące znaczenie: jeśli warunki podane w poprzedniku zachodzą, to warunki podane w następniku także muszą zachodzić. Pusty poprzednik jest traktowany jako trywialnie prawdziwy, a pusty następnik jako trywialnie fałszywy. Atomy w regułach mogą być postaci C(x), P(x,y), sameAs(x,y) lub differentFrom(x,y), gdzie C jest deskrypcją pojęcia języka OWL, P jest wasnocią, a x,y są albo zmiennymi, albo indywiduami, albo wartościami danych. | |
| |
W tzw. Human Readable Syntax czyli składni bardziej czytelnej człowiekowi reguły przyjmują formę: | |
| |
antecedent -> consequent czyli poprzednik -> następnik | |
| |
gdzie zarówno antecedent jak i consequent składają się ze zbioru atomów a1 ^ a2 ^ ... ^ an. Zmienne są zaznaczane przy użyciu standardowej konwencji prefixowania ich znakiem zapytania (np.?x). Korzystając z tej składni reguła stwierdzająca że połączenie własności 'parent' i 'brother' da nam własność 'uncle' może być zapisana następująco: | |
| |
parent(?a,?b) ^ brother (?b,?c) -> uncle(?a,?c) | |
| |
czyli jeśli Mary jest rodzicem Johna i Bill jest bratem Mary, to ta reguła wymaga by Bill był wujkiem Johna. | |
| |
Teraz spróbujemy zapisać tą regułę za pomocą XML Presentation Syntax. | |
| |
* **owlr** - prefix przestrzeni nazw dla nowo przedstawianej składni | |
* **owlx** - prefix przestrzeni nazw http://www.w3.org/2003/05/owl-xml | |
| |
Deklaracje zmiennych są zdaniami wskazującymi by dany URI był używany jako zmienna. Na przykład: | |
| |
<code xml> | |
<owlr:Variable owlr:name="x1"/> | |
</code> | |
| |
Aksjomaty reguł posiadają poprzedników (owlr:antecedent) oraz następników (owlr:consequent), które są listami atomów tworzonych z klas, predykatów, równości i nierówności. Na przykład: | |
| |
<code xml> | |
<owlr:classAtom> | |
<owlx:Class owlx:name="Person"/> | |
<owlr:Variable owlr:name="x1"/> | |
</owlr:classAtom> | |
</code> | |
| |
jest atomem klasy używającym nazwy Person, natomiast: | |
| |
<code xml> | |
<owlr:classAtom> | |
<owlx:IntersectionOf> | |
<owlx:Class owlx:name="Person"/> | |
<owlx:ObjectRestriction owlx:"hasParent"/> | |
<owlx:someValuesFrom owlx:class="Physician"/> | |
<owlx:ObjectRestriction/> | |
<owlx:IntersectionOf> | |
<owlr:Variable owlr:name="x2"/> | |
</owlr:classAtom> | |
</code> | |
| |
jest atomem klasy używającym opis reprezentujący osobę('Person') mającą przynajmniej jednego rodzica, który jest lekarzem('Physician') | |
| |
Property atom zawiera atrybut name oraz dwa elementy które mogą być zmiennymi, indywiduami, albo wartościami danych. Na przykład: | |
| |
<code xml> | |
<owlr:datavaluedPropertyAtom owlr:property="grade"> | |
<owlr:Variable owlr:name="x1"> | |
<owlx:DataValue rdf:datatype="&xsd:integer">4</owlx:DataValue> | |
</owlr:datavaluedPropertyAtom> | |
</code> | |
| |
Na koniec jeszcze przykład atomu wskazującego równość (nierówność) pomiędzy zbiorami indywiduów i nazwami zmiennych. | |
| |
<code xml> | |
<owlr:sameIndividualAtom> | |
<owlr:Variable owlr:name="x1"/> | |
<owlr:Variable owlr:name="x2"/> | |
<owlx:Individual owlx:name="Clinton"/> | |
<owlx:Individual owlx:name="Bill_Clinton"/> | |
</owlr:sameIndividualAtom> | |
</code> | |
| |
Teraz spróbujmy zapisać nasz przykład (tj. jeżeli dzień=poniedziałek wtedy temp=20st) za pomocą SWRL w składni XML: | |
| |
<code xml> | |
<owlx:Rule> | |
<owlr:antecedent> | |
<owlr:individualPropertyAtom owlr:property="monday"> | |
<owlr:Variable owlr:name="day"/> | |
</owlr:individualPropertyAtom> | |
</owlr:antecedent> | |
<owlr:consequent> | |
<owlr:datavaluedPropertyAtom owlr:property="grade"> | |
<owlx:DataValue rdf:datatype="&xsd:integer">20</owlx:DataValue> | |
</owlr:datavaluedPropertyAtom> | |
</owlr:consequent> | |
</owlx:Rule> | |
</code> | |
| |
* http://www.cs.man.ac.uk/~horrocks/Publications/download/2005/HPBT05.pdf - Bardzo przydatny PDF pt:"OWL RULES: A Proposal and Prototype Implementation" | |
* OWL Overview w języku polskim: http://www.rax.pl/tlumaczenia/OWL-Web-Ontology-Language-Overview/index.htm | |
* OWL Overview w języku angielskim: http://www.w3.org/TR/2004/REC-owl-features-20040210/ | |
| |
[[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules|Powrót]] | |